// pages/posts/posts.js
// import testdata from "../../testdata/testdata.js" //测试用数据
var app = getApp();
const Max_Posts = 10; //允许显示最多帖子数（不对搜索生效）
Page({
  /**
   * 页面的初始数据
   */
  data: { // mark: data
    // posts_datas:testdata.testpost,  //页面帖子数据，暂时用测试数据
    //按钮初始位置
    butX: '640rpx',
    butY: '950rpx',
    //posts_datas:app.globalData.postsOnshow,
    posts_datas: [],
    posts_ids: [],
    type: '时间', //筛选类型
    types: [
      '时间',
      '点赞数',
      '评论数',
      '浏览数',
      '更多'
    ],
    moreTypes: [
      '时间',
      '点赞数',
      '评论数',
      '浏览数',
      '收藏数',
      '狗',
      '猫',
      '鸟',
      '昆虫',
    ], //更多类型页面显示的类型
    showModal: false, //弹窗显示
    isSelect: false, //下来列表显示
    search: '', //搜索关键词
    reverse: false, //倒序
    filter: 'default',
    filter_race: '',
  },
  // px 转换为 rpx ，传参类型是数字（Number）
  pxTorpx(px) {
    let deviceWidth = wx.getSystemInfoSync().windowWidth; //获取设备屏幕宽度
    let rpx = (750 / deviceWidth) * Number(px)
    return Math.floor(rpx);
  },
  appDetail() {
    // console.log("小程序详情")
    wx.navigateTo({
      url: '/pages/user/about/about',
    })
  },
  goTop: function () {
    // console.log("回页面顶部")
    if (wx.pageScrollTo) {
      wx.pageScrollTo({
        scrollTop: 0
      })
    } else {
      wx.showModal({
        title: '提示',
        content: '当前微信版本过低，无法使用该功能，请升级到最新微信版本后重试。'
      })
    }
  },
  doRev() { //mark:reverse
    this.setData({
      reverse: !this.data.reverse,
    })
    this.getPageData(this.data.filter);
  },
  //按钮磁吸
  buttonMagnet(e) {
    //console.log(e.currentTarget)
    //console.log("1")
    const query = wx.createSelectorQuery().in(this);
    var that = this;
    query.select('.movable-area > .movable-view').fields({
      rect: true, //是否返回节点布局位置
      //properties: ['x', 'y'],
    }, function (res) {
      // res.x
      // res.y
    }).exec(function (e) {
      // console.log(e)
      // console.log(e[0].top)
      var top = that.pxTorpx(e[0].top)
      var y = top + 'rpx';
      if (e[0].left > 140) {
        that.setData({
          butX: '640rpx',
          butY: y,
        })
      } else {
        that.setData({
          butX: '20rpx',
          butY: y,
        })
      }
    })
  },
  search() {
    console.log(this.data.search)
    var search = this.data.search;
    let that = this;
    wx.request({
      url: 'https://api.fracher21.top/spotit/search',
      method: "GET",
      data: {
        string: search,
      },
      success(res){
        // console.log(res.data.data)
        var idArray = res.data.data;
        if(idArray == null){
          wx.showToast({
            title: '没有找到内容',
            icon: 'error'
          })
        }else{
          that.getPostsById(res.data.data)
        }
      }
    })
    //之后应重新拉帖子数据再setData
  },
  searchInput(e) {
    this.setData({
      search: e.detail.value
    })
  },
  //获取筛选类型，和页面联动
  getType(e) { // mark: 筛选
    //console.log(e.detail)
    // var ret = e.detail.type;
    if (e.currentTarget.dataset.type) {
      var ret = e.currentTarget.dataset.type;
    }
    var filter = 'default';
    var race = '';
    // console.log(e)
    if (ret != '更多') {
      this.setData({
        type: ret,
      })
      switch (ret) {    //具体筛选项
        case '时间':
          filter = 'default';
          break;
        case '点赞数':
          filter = 'like';
          break;
        case '评论数':
          filter = 'comment';
          break;
        case '浏览数':
          filter = 'view';
          break;
        case '狗':
          filter = 'race';
          race = 'dog';
          break;
        case '猫':
          filter = 'race';
          race = 'cat';
          break;
        case '鸟':
          filter = 'race';
          race = 'bird';
          break;
        case '昆虫':
          filter = 'race';
          race = 'insect';
          break;
        default:
          filter = 'default';
          break;
      }
      // console.log(filter)
      this.setData({
        filter: filter,
        filter_race: race,
      })
      this.getPageData(filter);
    } else {
      // console.log("更多")
      this.showMoreTypes();
    }
  },
  select: function () {
    var isSelect = this.data.isSelect
    this.setData({
      isSelect: !isSelect
    })
  },
  //点击下拉框选项，选中并隐藏下拉框
  chooseType: function (e) {
    let value = e.currentTarget.dataset.type
    this.setData({
      type: value,
      isSelect: false,
    })
    //console.log(value)
    this.getType(e);
    //之后存到全局数据里，重新加载帖子数据
    //app.globalData.selectOpt = this.data.type;
    //console.log( app.globalData)
  },
  //显示更多筛选
  showMoreTypes() {
    console.log("more types")
    this.showDialogBtn();
  },
  //以下为弹窗内容
  showDialogBtn: function () {
    this.setData({
      showModal: true
    })
  },
  //弹出框蒙层截断touchmove事件
  preventTouchMove: function () {},
  //对话框取消按钮点击事件
  onCancel: function () {
    this.setData({
      showModal: false
    });
  },
  //对话框确认按钮点击事件
  onConfirm: function () {
    this.setData({
      showModal: false
    });
  },
  //为页面获取数据函数，用于和数据库交流，获取帖子数据
  getPageData(filter) { // mark: 获取页面帖子数据!!!
    // console.log(filter)
    var fi = filter;
    var ra = this.data.filter_race;
    var type = this.data.type;
    let that = this;
    // console.log(type)
    wx.request({
      url: 'https://api.fracher21.top/spotit/listposts',
      method: "GET",
      data: {
        filter: fi, // 筛选类型名称，不填或填“default”为按时间从近到远排序
        value: ra,
      },
      success: (res) => {
        // console.log(res.data)
        //{"data": [6, 5, 4]}		拉帖子id
        that.setData({
          posts_ids: res.data.data,
        })
        var posts = [];
        var postids = res.data.data;
        if (that.data.reverse) {
          postids = postids.reverse();
        } else {
          postids = postids;
        }
        postids = postids.slice(0, Max_Posts);
        that.getPostsById(postids);
      }
    })
  },
  getPostsById(idArray) { //给一个id数组，获得相应帖子数据
    let that = this;
    var posts = [];
    var index = 0;
    Promise.all(
      idArray.map((item) => { //每个item是id
        return new Promise((resolve, reject) => {
          wx.request({
            url: 'https://api.fracher21.top/spotit/postinfo',
            method: "GET",
            data: {
              id: item, // 帖子id
              token: app.globalData.token // 可根据用户token显示是否点赞收藏此帖子
              // 若不传递token，则返回未点赞、未收藏
            },
            success: (res) => {
              // console.log(res.data)
              var tempPost = {
                _id: item,
                love: res.data.liked,
                stared: res.data.stared,
                post_data: {
                  tp: res.data.images,
                  nr: res.data.body,
                  firsttime: res.data.time, //毫秒数，后续数据库改为记录这个？
                  simpletime: res.data.time,
                  userid: res.data.creator.id,
                  userphoto: res.data.creator.head,
                  username: res.data.creator.name,
                  usermotto: res.data.creator.motto,
                  shoucang: res.data.stars,
                  dianzan: res.data.likes,
                  look: res.data.views,
                  pinglun: res.data.comments,
                  animal_id:res.data.animals[0],
                  location: {
                    longitude: res.data.x,
                    latitude: res.data.y,
                  }
                }
              };
              resolve(tempPost);
            }
          })
        })
      })
    ).then((result) => {
      posts = result;
      that.setData({
        posts_datas: posts,
      })
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) { // mark: 生命周期函数
    //this.getPageData('default');
    //console.log(this.data.posts_datas)
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    if (typeof this.getTabBar === 'function' && this.getTabBar()) {
      this.getTabBar().setData({
        selected: 0
      })
    }
    this.getPageData(this.data.filter);
    // console.log(this.data)
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },
  onRefresh: function () {
    this.getPageData('default');
    //导航条加载动画
    //wx.showNavigationBarLoading()
    //loading 提示框
    // wx.showLoading({
    //   title: 'Loading...',
    // })
    // console.log("下拉刷新啦");
    // setTimeout(function () {
    //   wx.hideLoading();
    //   wx.hideNavigationBarLoading();
    //   //停止下拉刷新
    //   wx.stopPullDownRefresh();
    // }, 2000)
  },
  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.onRefresh();
    //console.log("刷新")
  },
  // onPageScroll(e){
  //   console.log(e.scrollTop)
  // },
  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})